Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Sistema para control de tiempo y asistencia de personal (página 2)



Partes: 1, 2, 3, 4

Al presionar cualquiera de estas dos teclas la luz amarilla se encenderá indicando que se debe ingresar la contraseña o clave personal, caso contrario luego de unos segundos se cancelara la orden y volverá el marcador a su estado inicial. Al ingresar la contraseña seguida de la tecla de función ya sea * para marcado o # para consulta se verificara si existe la clave, de ser así se apaga la luz amarilla y enciende la luz roja que indica que no se mueva hasta que el proceso haya concluido, para lo cual la luz roja se apaga y el usuario puede retirarse; si la contraseña no esta bien ingresada se indica en la pantalla el mensaje de "contraseña incorrecta" y el marcador vuelve a su estado inicial.

Cabe indicar que el marcador se lo debe colocar en un lugar protegido de la humedad, la lluvia o factores extremos de contaminación y con una iluminación adecuada para el marcado en la noche.

El software de control de asistencia del personal es el encargado de procesar la información adquirida por el marcador electrónico.

Estará instalado en el departamento que maneje el personal o en servidor que este encendido permanentemente. Su funcionamiento debe ser permanente para receptar las marcaciones del personal, el programa funciona de manera oculta para no interrumpir o retrazar el resto de trabajos en el computador. Se aloja en la bandeja del sistema junto al reloj (Ver figura #1),para activarlo se debe dar doble click en el icono e introducir la contraseña del usuario.

Se maneja tres modos distintos, uno para el administrador del sistema, otro para el administrador del personal, y otra en modo de consulta para el resto de los usuarios.

El administrador del sistema tiene acceso a todo el menú del programa y a los parámetros de control de los puertos de comunicación.

El administrador del personal tendrá acceso a todo excepto a los controles de puerto de comunicación.

En el modo de consulta solamente se accederá a revisar o imprimir consultas de empleados.

El programa dispone de un control para cambiar la fecha y hora del marcador, la administración de empleados (datos y contraseña), la generación de horarios de trabajo así como la asignación de los mismos a los empleados, la colocación de días festivos de acuerdo al calendario local.

También dispone de una ventana de consulta en donde se observa a los empleados que actualmente están trabajando así como los que ya dejaron de trabajar, de acuerdo a la fecha y opción que se escoja, la ventana se actualiza en tiempo real. Por ultimo se dispone de una ventana de reporte de acuerdo a fechas que el usuario elija con la opción a ser impreso, el informe Cámara de seguridad consta de datos como el nombre del empleado, el numero total de horas normales trabajadas el numero de horas nocturnas contenidas en las horas normales, el numero de horas extras al 50% y el numero de extras al 100%.

  • Cámara de seguridad:

Es el dispositivo de seguridad que usa el sistema para comprobar la legitimidad de la persona que ha marcado, esta ubicado en el marcador electrónico aunque sea totalmente independiente de el, pues esta conectado al PC directamente, el computador el momento de marcar envía una orden a la cámara para que esta tome una foto a la persona que marca, el software de control dispone en su consulta de las fotos tomadas de manera que al ser revisada o auditada las marcaciones se puede comprobar fácilmente si hubo o no algún tipo de engaño por parte del trabajador. Al tener este dispositivo instalado y funcionando correctamente el sistema es confiable al 100% según el tipo de revisión que el encargado realice, cabe indicar que la visualización y la comprobación es rápida y puede ser escogida en forma de muestras para que estadísticamente nos de un factor de seguridad en la marcación.

  • Protocolo de comunicación:

El protocolo de comunicación es el lenguaje o la forma en que se entiende el marcador electrónico con la computadora, como se comunica mediante el puerto serie RS232 los datos enviados pueden ser caracteres, por lo que se utiliza una serie de letras para indicar tanto al computador como al marcador lo que se debe de realizar a continuación.

Las letras claves junto con su respectivo proceso para el sistema son las siguientes:

DESDE EL MARCADOR AL PC:

  • "P".- Comunicación general con la PC, sondea si el computador quiere enviar una nueva fecha y hora.

  • "V".- Indica que quiere enviar una clave o contraseña para ser verificada por el computador.

  • "C[clave]".- Indica que los siguientes datos son la clave a ser verificada.

  • "E".- Indica que el marcador esta listo para enviar los datos de marcación.

  • "R[datos]".- Indica que los siguientes datos son la fecha de marcación.

  • "F".- Indica que el marcador esta queriendo enviar datos para una consulta.

  • "S".- El marcador esta listo para recibir la respuesta de una consulta.

DESDE LA PC HACIA EL MARCADOR:

  • "C".- Indica que el computador esta listo para recibir la clave del usuario desde el marcador.

  • "L".- Indica que el computador esta listo para recibir los datos de marcación.

  • "X".- Indica que el computador esta en espera de que si debe recibir la confirmación para procesar una consulta.

  • "K".- Avisa al marcador que el ingreso se ha llevado con éxito.

  • "R".- Avisa al marcador que este listo para recibir nuevos datos de hora y fecha.

  • "Y".- Da al marcador una respuesta afirmativa para el caso de una clave o una consulta.

  • "N".- Da al marcador una respuesta negativa para el caso de una clave o una consulta.

El protocolo de transmisión de datos se basa en estas letras transmitidas a través del puerto mediante RS232.

  • Funcionamiento del sistema:

El sistema esta conformado por el marcador electrónico, la cámara Web, el cable de transmisión de datos, un computador para la administración del personal y el software de control.

El marcador electrónico cuenta con una señal luminosa de color verde que indica su correcto funcionamiento, en el display se puede apreciar el mensaje de inicio o por defecto de lo que se debe hacer para marcar o consultar "Presione * para marcar o # para consulta" en la segunda línea del display se observa la fecha y la hora del sistema de marcado electrónico, con todo esto en funcionamiento el marcador esta listo para recibir al personal; para realizar un ingreso o una salida se presiona la tecla "*", en seguida el display indicara el siguiente mensaje en su parte superior: "Clave:" y en el centro de la parte inferior aparecerá "(M)" lo que quiere decir que esta en espera de que el usuario introduzca su contraseña para una entrada o salida, al mismo tiempo se enciende la señal luminosa de color amarillo indicando la espera, cuando el usuario introduce su contraseña en lugar del numero marcado se colocan unos asteriscos, esto para salvaguardar la integridad de la clave; una vez introducida la clave pulsamos la tecla "*" para terminar el ingreso o salida, en seguida la señal amarilla se apaga para encenderse la luz roja que indica que se esta procesando el marcado.

Si la contraseña es errónea en la pantalla del display se visualiza el mensaje "Clave incorrecta" y el marcador regresa a su estado inicial, caso contrario se visualizara el mensaje "Ingreso OK" indicando que la clave es correcta y luego el mensaje "Listo el marcado" que indica que todo el proceso se ha realizado con éxito, al mismo tiempo la luz roja es apagada y el marcador vuelve a su estado inicial, aquí es cuando el usuario puede continuar con sus labores.

En ciertas ocasiones se necesitara verificar o tal vez recordar si en verdad ya se ha marcado una entrada o una salida por parte del personal, para ello el marcador electrónico cuenta con un modo de consulta; para ingresar se presiona la tecla "#" en el display se visualizara el mensaje "Clave:" y en el centro de la segunda línea "(C)", la luz amarilla de espera de una clave se encenderá, luego se debe colocar la clave seguido de la tecla "#", la verificación se llevara a cabo apagando la luz amarilla y encendiendo la luz roja, si se ha marcado una entrada el mensaje desplegado será "ACTIVO" , si el ultimo marcado por el usuario fue una salida el mensaje será: "NO ACTIVO". Esto sirve para estar seguro de no haber olvidado ingresar una entrada o salida por parte del personal.

En el computador de la persona encargada de la administración del personal el software se activa el momento del arranque y se coloca en forma oculta en la bandeja del sistema(ver figura 1), para consultar o realizar alguna operación en el programa, este se activa dando doble click en el icono del programa, en seguida se presenta una pantalla para introducir la contraseña del usuario (ver figura 2), dependiendo del tipo de usuario, el programa correrá con distintas opciones, para el administrador del sistema el software mostrara todas las opciones disponibles además contara con la administración del puerto de comunicaciones en donde se escogerá el numero de puerto y se especificara si se esta usando o no un convertidor de serial a usb (ver figura 3).

Monografias.com

figura 1

Monografias.com

figura 2

Para el administrador del personal se presentaran todas las opciones excepto el manejador del puerto (ver figura 3).

Monografias.com

figura 3

Y para un usuario sin privilegios las opciones se reducirán a solamente generar reportes o consultar el personal actual (ver figura 4).

Monografias.com

figura 4

Las opciones contenidas en el menú del sistema junto con su función son las siguientes:

  • MARCADOR:

Monografias.com

figura 5

  • RELOJ.- Muestra una pantalla para la igualación del reloj marcador, cuenta con una opción de cargar el reloj del sistema, al activar esta opción la fecha y hora del sistema se cargan en los cuadros respectivos al mismo tiempo los desactiva para que el usuario no pueda modificarlos; si la opción es desactivada los cuadros de datos de fecha y hora se activan quedando grabados los últimos datos ingresados. Cuando se este seguro de la nueva fecha y hora a ser enviada se presiona el botón "YES", aparece un mensaje en el centro indicando el envió de datos, cuando los datos sean enviado el mensaje desaparecerá, si no se tiene comunicación con el marcador luego de un tiempo se presenta un mensaje de error indicando "No hay conexión con el marcador", para salir de esta ventana se presiona sobre el botón de "EXIT".(ver figura 5).

  • PERSONAL:

  • INGRESO.- Se trata de una ventana para la administración del personal la cual cuenta con botones para crear, actualizar, eliminar o buscar un usuario, así como navegadores para ir por todos los registros de usuarios ya creados. El botón de "NUEVO" creara un nuevo usuario en donde se colocan los datos como Nombres, Apellidos, Dirección, Contraseña y tipo de usuario.

El campo nombres, apellidos y dirección son alfanuméricos donde puede contener cualquier palabra.

Monografias.com

figura 6

La contraseña es de un máximo de seis caracteres numéricos.

El tipo de usuario es un cuadro con tres opciones: Administrador del Sistema, Administrador del Personal, Empleado.

El botón "MODIFICAR" permite el ingreso a registros de personal para la actualización de datos como puede ser un cambio en la contraseña.

El botón "ELIMINAR" borra el registro que actualmente esta cargado.

El botón "BUSCAR" activa las casillas de datos para que al ingresar uno de ellos lo busque y coloque el o los resultados en el cuadro de Resultados de la Búsqueda; para cargar esos datos al presionar en "ACEPTAR".

Debajo de los casilleros de datos se cuenta con unos botones navegadores el primero conduce al primer registro, el segundo retrocede un registro, el tercero avanza un registro, y el cuarto conduce al último registro.

El botón "SALIR" cierra la ventana actual y regresa al menú principal (ver figura 6).

  • CONSULTA.- Muestra una ventada con las actividades de marcación actuales, se coloca con la fecha actual pudiendo ser modificada para consultar marcaciones de otros días.

Contiene tres opciones de vista, "Activos" se visualiza en el cuadro de listado solo al personal que esta laborando actualmente; "No activos" muestra en el cuadro de listado al personal que ya ha marcado una salida para la fecha escogida; y "Todos" muestra en el cuadro de listado a todo el personal que ha marcado en la fecha, pudiendo repetirse los nombres si se presenta el caso de que la misma persona trabaje dos turnos el mismo día. Al recorrer sobre algún nombre del cuadro de listado o dando click sobre un nombre el cuadro de detalles es llenado para ser consultado por parte del administrador. En el detalle esta contenida toda la información acerca de la marcación del personal incluyendo las respectivas fotos para la auditoria por parte del administrador. El botón "EXIT" sale de la pantalla de consulta y regresa al menú principal (ver figura 7).

Monografias.com

figura 7

  • HORARIOS:

  • GENERAR.-

Monografias.com

figura 8

  • DÍAS FESTIVOS: Se visualiza una pantalla para elegir días festivos de acuerdo al calendario, para ello se tiene tres calendarios el primero y el ultimo es de carácter informativo, pudiendo señalar solo el central, no se puede modificar fechas pasadas por lo estas no se podrán señalar, al tener una fecha a ingresar se puede dar doble click sobre la fecha o señalar y presionar el botón ">" para ingresarla, en seguida un cuadro de dialogo es abierto pidiendo un nombre para esa fecha, luego se presiona "Aceptar" o "Cancelar" según sea el caso y la fecha se registrara o no. En el cuadro al lado derecho se tiene un listado de las fechas festivas ingresadas, si se coloca en una de ellas el calendario automáticamente se colocara en ella para ser modificada o no, también se puede eliminar una fecha presionando el botón "<". Cuando las fechas festivas estén ingresadas se presiona el botón de "Listo" y la ventana se cierra regresando al menú principal (ver figura 8).

Monografias.com

figura 9

  • TURNOS : En esta ventana se ingresan los turnos para los empleados, contiene las opciones para crear, editar o eliminar registros.

Contiene botones navegadores para revisar los registros ingresados.

El botón de "NUEVO" creara un nuevo turno en donde se colocan los datos como Nombres, Desde que hora, y hasta que hora. El campo de nombres, es alfanuméricos e indica una descripción para ese turno. En los campos Desde se coloca la hora de inicio del turno junto con una tolerancia en minutos que indica el rango valido de llegada para ese turno estos con campos con caracteres numéricos.

En los campos Hasta se coloca la hora de fin del turno junto con una tolerancia en minutos que indica el rango valido de salida para ese turno estos con campos con caracteres numéricos.

En este cuadro de datos están dos botones para aceptar o cancelar el turno que se esta realizando.

El botón "MODIFICAR" permite el ingreso a registros de turnos para su actualización.

El botón "ELIMINAR" borra el registro que actualmente esta cargado. Debajo de los casilleros de datos se cuenta con unos botones navegadores el primero conduce al primer registro, el segundo retrocede un registro, el tercero avanza un registro, y el cuarto conduce al último registro.

En la parte derecha esta todo el listado de turnos ingresados, al colocarse en uno de ellos el calendario se coloca en la fecha seleccionada.

El botón "SALIR" cierra la ventana actual y regresa al menú principal (ver figura 9).

Monografias.com

figura 10

  • ASIGNAR.- Muestra la ventana en la cual elijo el empleado y le asigno sus turnos correspondientes. Contiene cuadros en los que introduzco los apellidos o nombres y el listado inferior indica los posibles resultados, se escoge uno de ellos dando doble click para pasar a la ventana de turnos, en ella se escoge uno y se lo asigna al empleado elegido presionando el segundo botón del centro o dando doble click sobre el turno, el primer botón sirve para asignar todos los turnos creados al empleado, el tercer turno quita el turno señalado en el listado de turnos asignados y el cuarto botón quita todos los turnos asignados, cuando todo esta asignado se pulsa en "ACEPTAR" y se regresa a la ventana anterior para escoger otro empleado, para salir se presiona "ACEPTAR" y se retorna al menú principal (ver figura 10).

  • REPORTES:

Monografias.com

figura 11

  • MENSUAL.- Presenta la pantalla para visualizar el total de los datos de marcado de acuerdo a las fechas escogidas en la parte superior, y pulsando en "ACEPTAR" se genera todos los registros marcados entre las fecha indicadas con sus totales en horas trabajadas, nocturnas, extras al 100% y extras al 50%. Si todo esta listo se presiona en el botón "IMPRIMIR" luego sale un mensaje que pregunta si esta seguro de imprimir el informe al responder afirmativamente se imprime en la impresora por defecto del sistema (ver figura 11).

  • PROGRAMA:

  • CAMBIAR DE USUARIO.- Ejecuta la ventana inicial de ingreso al programa para colocar una nueva contraseña y así cambiar de usuario (ver figura 2).

  • SALIR DEL PROGRAMA.- Es la única manera de terminar con la aplicación, al dar click en la esquina superior derecha el programa no termina sino que se minimiza en la barra del sistema quedando totalmente activo y oculto.

CAPITULO 4

Descripción y funcionamiento del marcador

  • Microcontrolador PIC16F877A:

El PIC (Programable Integrated Circuits) o circuitos integrados programables es un chip que permite obtener un circuito integrado a medida, es decir que se puede hacer que se comporte como un procesador o un temporizador o cualquier otro sistema mediante un programa grabado en la memoria ROM interna.

En realidad un microprocesador y un microcontrolador no son la misma cosa. Los PICs son microcontroladores, es decir, una unidad que posee en su interior al microprocesador y a los elementos indispensables para que pueda funcionar como una mini computadora en un solo chip. Un microcontrolador integra la CPU y todos los periféricos en un mismo chip. El programador se desentiende de una gran cantidad de dispositivos y se concentra en el programa de trabajo.

Los PICs emplean un conjunto de instrucciones del tipo RISC (Reduced Instruction Set Computer). Con el RISC se suele ejecutar la mayoría de las instrucciones con un solo pulso del clock.

Los microcontroladores son como bloque se poseen una memoria de programa que es el lugar donde deben alojarse los datos que le indiquen al chip que es lo que se debe hacer; una memoria de datos donde ingresen las señales que debe procesar el programa, una unida aritmética y lógica donde se desarrollen todas las tareas, una unidad de control que se encargue de supervisar todos los procesos y puertos de entrada y salida para que el PIC tenga contacto con el exterior.

LÓGICA DE CONTROL

MEMORIA DE PROGRAMA

ALU

MEMORIA DE DATOS

PUERTOS

ARQUITECTURA SIMPLIFICADA DEL PIC

El microcontrolador como cualquier circuito integrado analógico tiene entradas, salidas y algunos componentes exteriores necesarios para procesar las señales de entrada y convertirlas en las señales de salida. El 16F877A requiere un cristal con dos capacitores y como mínimo un resistor para el reset. Por supuesto necesita una tensión de fuente de 5V (VDD) aplicada con respecto al terminal de masa (VSS). Posee cinco puertos de entrada o salida; el A, B, C, D y E cuyos terminales son marcados RA0 al RA5, RB0 al RB7, RC0 al RC7, RD0 al RD7 y RE0 al RE2. Estos puertos pueden ser programados como de entrada o de salida. El terminal 1 opera como reset pero también cumple funciones de carga de memoria de programa cuando es excitado con pulsos de 15V. El puerto A también cumple funciones de puerto analógico, recepta voltajes de referencia a través de RA2 y RA3, el terminal RA4 también tiene funciones como entrada de un temporizador. El puerto B es de función solo digital y el terminal RB0 funciona también como entrada de una interrupción. El puerto C y D son solo digitales y sus terminales RC7 y RC8 se pueden utilizar como salida y entrada de datos para el puerto serie (RX y TX). El puerto E puede ser digital o analógico.

En los terminales OSC1 y OSC2 se conecta el cristal para reloj del microcontrolador.

ESQUEMA DE TERMINALES DEL PIC16F877A

Monografias.com

Monografias.com

Las conexiones necesarias para que el Pic funcione correctamente son la alimentación de voltaje el oscilador externo y la resistencia a reset, aunque sin las dos ultimas conexiones el Pic funciona bien se requieren esta para una mayor precisión en los ciclos internos de procesamiento.

CONEXIÓN DE ALIMENTACIÒN DEL PIC 16F877A

  • LCD LM044L:

Los módulos LCD (Display de Cristal Liquido), sirve para presentar mensajes que indicar al usuario el estado del marcador así como dar instrucciones para el manejo.

El LCD permite la comunicación entre el marcador electrónico y el usuario.

Esta constituido por un circuito impreso en el que están integrados los controladores del display y los pines para la conexión del display. Sobre el circuito impreso se encuentra el LCD en si, en total se pueden visualizar 2 líneas de 20 caracteres cada una, es decir 40 caracteres.

A pesar de que el display solo puede visualizar 20 caracteres por línea, puede almacenar en total 40 por línea, por lo que es el programador el que especifica que 20 caracteres son los que se van a visualizar.

La tensión nominal de alimentación es de 5 voltios con un consumo menor a 5 mA.

Monografias.com

Los caracteres del LCD disponen de una matriz de 5×8 puntos para representar
cada carácter, en total se pueden visualizar 256 caracteres diferentes,
240 caracteres están grabados dentro del LCD y representan las letras
mayúsculas, minúsculas, signos de puntuación, números,
etc. A la vez existen 8 posibles caracteres que pueden ser definidos por el
programador.

Código asociado a cada carácter imprimible por el display.

En el cuadro anterior se muestran los caracteres mas importantes que es capaz de imprimir el display, todos los códigos están en hexadecimal.

Los códigos desde el $80 hasta el $FF, son símbolos extraños y los comprendidos entre el 0 y 7 están reservados para que el programador los defina.

El LCD dispone de dos tipos de memorias: la DD RAM es la que almacena los caracteres que están siendo visualizados o que se encuentran en posiciones no visibles.

El display almacena en esta memoria dos líneas de 40 caracteres pero solo se visualizan 2 líneas de 20 caracteres, el tamaño de esta memoria es de 80 bytes. Las direcciones de los caracteres dentro de esta memoria son $00-$27 para las de la primera línea y las $40-$67 para las de la segunda línea.

La operaciones de escritura en el display, en realidad son operaciones de escritura en la memora DD RAM.

La memoria CG RAM es la memoria que contiene los caracteres definibles por el programador, esta formada por 64 posiciones, con dirección $00-$3F; cada posición es de 5 bits.

Los pines para su correcto funcionamiento son:

Monografias.com

Los datos se transmiten por un bus de datos de 8 bits de anchura, pero también se puede trabajar con un bus multiplexado en dos grupos de 4 bits, este tipo de conexión es el usado en el sistema por necesitar menos circuiteria y los pines utilizados son desde el D4 a D7.

Para el control del display son necesarios 3 bits: una señal de enable (E), una para indicar lectura/escritura (R/W) y otra para seleccionar uno de los dos registros internos (RS). Para el control del contraste hay que introducir por el pin Vo una tensión de 5 y 0 voltios.

La tensión típica es de 0,6 voltios. Normalmente se coloca un potenciómetro para poder ajustar en cada momento el contraste mas adecuado.

CONEXIÓN DEL LCD A LA ALIMENTACION Y PIC

Monografias.com

  • Teclado matricial:

Los teclados matriciales son muy utilizados para ingresar datos, en el sistema sirve para introducir la clave para marcar o consultar.

El teclado esta formado por una matriz de pulsantes, cada pulsante es una tecla, la matriz esta unida por sus columnas y sus filas, de manera que los terminales de cada pulsante se encuentran unidos el un terminal con el otro terminal del siguiente pulsante por columnas y el otro por filas.

Para controlar el teclado se debe identificar que tecla se ha pulsado realizando un barrido de teclas, el teclado utilizado es de tres columnas por 4 filas de manera que tendrá 7 terminales lo mismos que son conectados a uno o dos puertos del microcontrolador, también las columnas están conectadas a 5v. a través de una resistencia.

Para localizar la tecla presionada se realiza un recorrido a través de las filas colocando consecutivamente en un estado bajo fila por fila, al estar en estado bajo una fila las columnas deben esta en un estado alto, se pregunta que columna esta en un estado bajo, al cumplir esta opción se obtiene la tecla pulsada en la fila y columna actual.

CONEXIÓN DEL TECLADO MATRICIAL AL PIC

Monografias.com

  • Reloj de tiempo real DS1307:

El circuito integrado DS1307 es un reloj en tiempo real de bajo consumo de energía, que provee de la hora y fecha en una memoria de 56 bytes no volátil SRAM. Su dirección y datos se transfieren vía I2C en un bus bidireccional.

El DS1307 proporciona segundos, minutos, horas, día, fecha, mes e información del año, el fin de fecha del mes se ajusta automáticamente durante meses con menos de 31 días, incluyendo correcciones para el salto del año.

El reloj opera en los formatos de 24 o 12 horas con el indicador AM/PM.

Tiene un circuito de sensor de fallos en la alimentación de corriente e interruptores automáticos para el cambio a un suministro de energía por batería.

El DS1307 opera como un dispositivo esclavo en un bus serie I2C.

El acceso se obtiene implementando unas condiciones de inicio y proporcionando un código de identificación del dispositivo seguido por una dirección de registro.

Cuando VCC se cae debajo de 1.25 v el dispositivo termina cualquier acceso en marcha y no reconoce entradas para evitar que datos erróneos lleguen.

La alimentación del dispositivo se la realiza a través de los pines VCC y GND, siendo VCC la que recibe 5V. y GND 0V. con respecto a VCC.

Cuando se aplican los cinco voltios dentro de los limites normales, es puede leer o escribir normalmente en el integrado. Los 3v. de la batería se conecta cuando VCC esta debajo de 1.25 voltios, las lecturas e escrituras quedan inhabilitadas.

En el pin VBAT se conecta la batería de 3 voltios estándar, que debe proporcionar entre 2 a 3.5 voltios para una operación apropiada, una batería de lithium con 48 mA o mayor proveerá de energía al DS1307 por mas de 10 años a 25 grados centígrados.

Los pines SCL (entrada serial de reloj) y SDA (entrada/salida de datos seriales) son conectados para el bus de transmisión I2C al microcontrolador.

El pin SQW/OUT cuando esta colocado a 1 se habilita y puede rendir una de cuatro frecuencias, cuando esta abierto requiere una resistencia en pull-up, puede operar con el voltaje VCC o el de la batería.

Los pines X1, X2 son la conexión estándar de 32.768kHz de un cristal de cuarzo.

TERMINAL DEL DS1307

Monografias.com

CONEXIÓN DEL RELOJ EN TIEMPO REAL CON EL PIC

Monografias.com

  • Max232:

El MAX232 es un driver/receptor dual que incluye un generador de voltaje para proporcionar un voltaje de la norma EIA-232 con los niveles de un suministro de 5 v. Reciben un voltaje típico de 1.3v con un ruido de 0.5v y puede aceptar hasta +/- 30v. de entrada. El circuito integrado sirve para transmitir a mayor distancia, ya que incrementa los niveles de voltaje de 5v. a +/- 10v., gracias a un juego de capacitares que le ayuda a doblar los voltajes, es alimentado con 5v.

El dispositivo dispone de 2 juegos de transmisores y receptores, de los cuales para el sistema de envío a través del puerto serie solo se utiliza uno. El MAX232 ayuda a convertir los voltajes TTL del pic en voltajes de la norma RS232, quiere decir que del microcontrolador sale un esta lógico alto (5v), a la salida del circuito integrado tendremos -10v. y si se envía un 0 lógico (0v), el MAX232 envía +10v. Para la conexión se necesita capacitores y su alimentación es de 5v.

DIAGRAMA DE CONEXIÓN DEL PIC Y EL MAX 232

Monografias.com

  • Funcionamiento del marcador:

El microcontrolador es el eje central del marcador, en el se procesan los datos de entrada y salida hacia el resto de componentes, esta alimentado con 5v en la salida de un integrado regulador de voltaje para asegurar los 5v., el LCD esta conectado con un bus de 4 bits al puerto RB en los pines RB4 al RB7, RS al pin RB1 y E al pin RB2; por lo tanto todo el control del display ocupa el puerto B del microprocesador. Las luces indicadoras están conectadas al puerto C en los pines RC0, RC1 y RC2 configurado como salida para proporcionar el voltaje que los hace encender.

Al energizar el marcador el microprocesador envía bit de estado alto al pin RC0 que contiene el led verde avisando que el circuito esta conectado, a la vez envía los datos de control al display a través del puerto B para visualizar los mensajes de indicadores de marcado.

El DS1307 o reloj en tiempo real se comunica con el microcontrolador a través del puerto C en los pines RC4 y RC5 con una comunicación I2C, el PIC pide los datos al DS1307 para ser analizados y colocados en la segunda línea del LCD, estos datos son refrescados o vueltos a leer en un ciclo continuo de 500 milisegundos, estos datos son guardados en variables temporales para luego ser enviados al PC.

El teclado ocupa el puerto D del microcontrolador con los pines RD0 a RD3 para las filas y los pines RD4 a RD6 para las columnas, el PIC en un ciclo constante realiza barridos en las filas en busca de pulsaciones, si una tecla es pulsada el microcontrolador la detecta y si no se trata de una de las dos teclas de función (*,#) las ignora y sigue realizando el barrido hasta que una de ellas se ha presionado; luego envía el respectivo mensaje al display, enciende la luz indicadora de color amarillo y continua con el barrido del teclado en busca de pulsaciones, si luego de un tiempo de 5 segundos aproximadamente el micro no reconoce ninguna tecla presionada coloca en un estado lógico bajo al pin de la luz amarilla y vuelve al mensaje de inicio en el display, luego continua con el barrido del teclado.

El circuito integrado MAX232 se conecta con el microcontrolador a través de los pines RC5 y RC6, usando uno de los dos puertos de entrada y salida del integrado.

El Micro luego de recibir la tecla de función junto con la contraseña, envía una señal al MAX232 para que la amplifique y la envíe hacia el puerto serial del computador; al mismo tiempo el micro se queda en posición de espera de datos, si luego de 500 microsegundo no ha recibido respuesta del PC, indica mediante un mensaje en el display que no esta conectado a la PC y retorna a su estado inicial, pero si el mensaje es recibido en seguida vuelve a enviar la contraseña introducida por el teclado y espera un tiempo para recibir la respuesta de comprobación, si esta es afirmativa envía los datos de marcado obtenidos leyendo las variables que tienen los datos del DS1307 apaga la señal amarilla y enciende la señal roja, caso contrario manda un mensaje de clave errada y retorna al estado inicial; luego de enviar los datos el micro queda en espera de confirmación de recibido del PC y al recibirla envía al display un mensaje de culminación apaga la luz roja y vuelve al inicio, si no recibe la respuesta indica mediante el display que la conexión con el ordenar se a perdido y que el proceso de marcado no se ha llevado con éxito.

CAPITULO 5

Software del sistema

  • Software del marcador:

El software del marcador se desarrollo mediante el programa de MicroCode Studio "Pic Basic Pro 2.1".

Para comenzar se inicializa los puertos e indicaciones generales, la sentencia ADCON1=%00000110 coloca en puerto RA a digital, @ device XT_OSC indica que se necesita de un oscilador externo al microcontrolador y la sentencia INCLUDE "modedefs.bas" llama a la librería modedefs.bas para ser usada dentro del programa en la comunicación serial.

Se realizan las definiciones para control de los dispositivos con la palabra clave DEFINE para el control del display y la comunicación I2C de la siguiente manera:

  • lcd_lines 4.- define un LCD de 4 líneas.

  • lcd_dreg portb.- define los pines del LCD al puerto b.

  • lcd_dbit 4.- indica que empiece desde RB4 en adelante.

  • lcd_rsreg portb.- define el puerto para conectar el bit RS del LCD.

  • lcd_rsbit 1.- define el pin para conectar el bit RS del LCD.

  • lcd_ereg portb.- define el puerto para conectar el bit Enable del LCD.

  • lcd_ebit 2.- define el pin para conectar el bit Enable del LCD.

  • I2C_SCLOUT 1.- indica que no necesite resistencia pull-up en scl para la comunicación del I2C.

Se escribe el bloque de variables a usar en el programa, las más importantes son:

NUMERO: variable de tipo Byte para almacenar la tecla pulsada.

ledverde: de tipo portc.0 para el led verde en el puerto D pin #2.

ledazul: de tipo portc.1 para el led amarillo en el puerto D pin #3.

ledrojo: de tipo portc.2 para el led rojo en el puerto D pin #4.

bm: de tipo bit para indicar si se esta marcando.

bc: de tipo bit para indicar si se esta consultando.

Tm: de tipo word para controlar el tiempo de marcado.

Cpin: de tipo Portc.3 para indicar el pin de señal de reloj I2C.

Dpin: de tipo Portc.4 para indicar el pin de datos I2C.

segu, minu, hora, diaF, mes y anio: de tipo byte para almacenar la hora y fecha.

IngSer: de tipo PORTC.5 indica la entrada serial para la comunicación.

OutSer: de tipo PORTC.6 indica la salida serial para la comunicación.

dato: de tipo byte para el dato a recibir del pc.

Clave: de tipo vector de byte para almacenar la clave.

Cl0, hasta C15: de tipo byte para almacenar cada digito de la clave.

Se coloca un bloque de las constantes usadas dentro del programa como la velocidad de aparición de los mensajes, tiempo de espera que se marque, tiempo de lectura del reloj, y tiempo de comunicación constante con la PC.

Luego se inicializan las variables igualándolas a cero o en la posición en la que se debe iniciar esa variable, se espera un tiempo de 200 milisegundos para el encendido del LCD con "PAUSE 200". Se pone en alto el pin del led verde, se limpia la pantalla del LCD, se envía la ejecución del programa a una subrutina para cargar los datos del reloj, esta al final envía la ejecución a la siguiente línea que la ejecuto, y se coloca el puerto RD de manera que la mitad sean de entrada y la otra de salida.

Luego se ejecuta el ciclo principal del programa llamado CICLO de la siguiente manera: primero se lo envía a una subrutina llamada BARRIDO que es la que esta constantemente verificando si una tecla a sido pulsada, luego va a la subrutina ESPACIO que cuida que si una tecla a sido pulsada el programa se detenga hasta que esta sea soltada, para evitar duplicidad de teclas, una vez soltada la tecla la subrutina envía la ejecución del programa de regreso y esta se dirige a la subrutina TECLADO que es en donde se administra la tecla presionada, es decir en donde el programa ejecuta ordenes de acuerdo a la tecla pulsada, al terminar este proceso devuelve el mando a la siguiente línea de código la cual manda a realizar nuevamente el ciclo descrito. El ciclo principal del programa queda de la siguiente manera:

CICLO:

GOSUB BARRIDO : GOSUB ESPACIO

GOSUB TECLADO

GOTO CICLO

El proceso que realiza cada uno de las subrutinas es el siguiente:

  • BARRIDO: Pregunta si la velocidad de aparición del mensaje se ha cumplido que se visualice la siguiente letra del mensaje, luego aumenta el contador de este mensaje.

Luego pregunta si el tiempo para marcar a expirado si es así manda a iniciar el mensaje inicial, caso contrario verifica si se esta marcando o consultando para aumentar la variable de tiempo de espera. Empieza a ejecutar el barrido enviando un uno lógico a la primera fila y preguntando por cada una de las columnas a ver cual esta en un estado lógico alto, al encontrarse con uno de ellos coloca en la variable para la tecla pulsada el carácter que corresponde a esa tecla y luego retorna la ejecución al ciclo principal, si no detecta nada baja el estado de esa fila y lo eleva en el siguiente volviendo a preguntar por la columna en estado alto, esto se ejecuta continuamente hasta que se llegara a detectar una tecla pulsada y salir de esta rutina.

  • ESPACIO: Lo primero es verificar los tiempos del mensaje y reloj para que si estos vencieron ejecutar esas rutinas, luego pregunta si la tecla sigue en un estado alto si es así vuelve a ejecutar esta rutina desde el inicio, caso contrario espera 10 microsegundos y sale de esta rutina, esto quiere decir que se ha soltado la tecla y que puede seguir con la ejecución normal del programa.

  • TECLADO: Al llegar a esta rutina la variable de tecla viene con algún carácter cargado, lo primero es preguntar si ya esta ejecutándose un marcado o consulta verificando el estado de las variables bm y bc si están a 0 y la variable de tecla es * o # entonces de cambia de estado al led amarillo, se encera la parte superior del LCD, se manda a escribir el mensaje de clave en el LCD así como el de marcado o el de consulta en el centro de la segunda línea, a su vez de coloca la variable bm o bc según sea el caso a 1 para indicar que se esta procesando un marcado o una consulta. Si al verificar la tecla marcada ya se esta ejecutando la marcación y no se trata de las dos teclas especiales (*, #) se manda a escribir un símbolo al LCD y se guarda la tecla en la variable de la clave, si se esta ejecutando una marcación y se ha pulsado la tecla especial se envía la ejecución a una rutina para el envío de la clave al PC. La rutina de verificación de la clave se llama "Verclave".

  • Verclave: Coloca el led amarillo en bajo y eleva el bit del led rojo, manda a la rutina Verificar que es la encargada de enviar la clave al PC y de recibir la contestación de afirmativo o negativo en la verificación, si verificar indica o devuelve en la variable CC el valor de 0 coloca en el display el mensaje de "Clave Incorrecta"; caso contrario manda a una rutina para enviar los datos del reloj al PC y coloca en el display el mensaje "Listo del marcado", luego baja el bit del led rojo e inicia el mensaje nuevamente.

El programa vuelve a ejecutarse en el ciclo principal de manera descrita anteriormente atendiendo las pulsaciones que el usuario haga.

El código completo del programa se lo puede observar en el ANEXO 1.

  • Software de control de personal:

  • Generalidades.-

El software de control fue elaborado en el lenguaje de programación Visual Basic contenido en el paquete de Visual Estudio 6.0 de Microsoft.

El contenido del programa se divide en tres grandes bloques:

  • Formularios.- Son las ventanas en donde se lleva a cabo la interacción entre el usuario y el programa, es en donde se llevan a cabo la interfaz entre el operario y la maquina. Existen 11 formularios creados que serán explicados mas adelante.

  • Módulos.- Son contenedores de los procedimientos y declaraciones a los que tienen acceso el resto de la aplicación, se tienen dos que serán explicados mas adelante.

  • Módulos de clase.- Es en donde se programa los objetos en visual Basic. Contienen los objetos de acceso a la base de datos es decir todos los procedimientos para el manejo de los datos de la aplicación, la aplicación tiene seis módulos de clase.

  • Formularios:

Los formularios usados son los siguientes:

  • FrmInicio: Es el formulario de que se inicia al arrancar la aplicación, contiene una pantalla de presentación del programa, la cual se elimina luego de un tiempo, antes de eliminarse ejecuta el formulario principal MDIPrincipal y lo oculta en la barra del sistema.

  • FrmIngreso: Es la pantalla que contiene el código para verificar la clave del usuario que quiere ingresar a la aplicación. Este formulario crea un objeto BD_Personal para comunicarse con la base de datos y la tabla que contiene los datos del usuario, mediante el método ClaveRepetido verifica si la clave existe y carga los datos del usuario en la variable UserActivo y TipoUser, luego llama al proceso IniciarMenu para cargar solo las opciones de acuerdo al tipo de usuario, visualiza el formulario principal y se auto elimina. Si la clave no existe muestra un mensaje de clave errónea y regresa a que el usuario escriba una nueva clave.

  • MDIPrincipal: Es un formulario MDI lo que quiere decir que es un formulario contenedor que puede albergar otros formularios, es el principal de la aplicación, contiene el control para la comunicación serial, un timer para enviar datos al marcador y un control para colocar la aplicación en la barra del sistema. Este formulario contiene el menú de la aplicación que es cargado según el tipo de usuario por el formulario FrmIngresar. Crea un objeto BD_Marcacion para controlar la base de datos con la tabla que contiene los datos de marcado.

Al iniciarse asigna su ancho y largo, inicia el menú, y activa el formulario FrmCamara.

Gestiona el inicio del resto de formularios que son contenidos en el, asignando su tamaño y deshabilita las opciones del menú.

También gestiona la comunicación del puerto seria a través del control MSComm, recibiendo los datos a través del evento OnComm del control.

  • FrmReloj: Este formulario contiene el procedimiento para igualar la fecha del marcador, tiene un chekbox que al marcarlo carga la hora y fecha del sistema en sus textbox, un command button que habilita un timer para comunicarse con el marcador y cargar los nuevos datos y uno para avisar que no se puede comunicar y cancelar la orden.

  • FrmPersonal: Crea un objeto BD_Personal para el manejo de los datos de personal, gestiona al personal a cambiarse mediante botones de comando como nuevo, modificar, borrar y buscar. Contiene una barra de navegación con botones para desplazarse por los registros, todos estos botones hacen uso de métodos del objeto BD_Personal.

  • FrmConsulta: En este formulario se visualiza las marcaciones actuales y pasadas, crea un objeto BD_Marcaciones para leer los datos de la tabla de marcaciones, y las carga de acuerdo a la fecha introducida por el control DtPicker DTPFecha a través de su propiedad Value en el listbox LstPersonal. Llena los datos por medio de los métodos LlenarListado y LlenarDatos del objeto BD_Marcaciones.

  • FrmFestivos: En este formulario controla las fechas festivas creando un objeto BD_DiasF, tiene tres controles de calendario que manejan las fechas introducidas por el usuario así como dos botones para ingresar y sacar datos del listado de días festivos, guarda los datos a través del método Nuevo del objeto DB_DiasF.

  • FrmTurnos: Gestiona los turnos que una empresa puede tener para sus empleados, para esto crea un objeto BD_Turnos, mediante procedimientos controla las horas ingresadas, tiene botones navegadores para desplazarse por los registros así como botones para crear, actualizar y eliminar registros, todos estos usan métodos del objeto BD_Turnos.

  • FrmAsignaciones: Contiene búsqueda de personal para luego asignarlos a algún turno previamente creado. Crea objetos BD_Personal, BD_Turnos y BD_Asignaciones, para localizar al personal, ver los turnos creados y realizar las asignaciones respectivamente.

  • FrmReportes: Contiene dos controles DTPicker para el manejo de las fechas de inicio y fin junto con un control MSFlexgrid para visualizar el resultado del reporte, crea un objeto BD_Marcacion para llenar el reporte mediante su método LlenarReporte. Trabaja con la impresora por defecto mediante el objeto Printer.

  • FrmCamara: Este formulario siempre permanece oculto, es el que contiene el control que maneja la cámara web, se usa desde otro formulario solo para llamar a la cámara y tomar la foto cuando se esta marcando.

  • Módulos:

La aplicación tiene dos módulos de procedimientos y declaraciones:

  • Procedimientos: Contiene todos los procedimientos y funciones que pueden ser usados por toda la aplicación. Los procedimientos y funciones son:

  • Proc_Reloj.- Envía el carácter "R" al marcador par que este listo a recibir los nuevos datos del reloj.

  • Proc_Envio_Reloj.- Envia dato por dato de la fecha y hora al marcador, cuando el envía a concluido vuelve a la normalidad el formulario FrmReloj.

  • EsLetra.- Es una función que devuelve verdadero si el dato ingresado es un carácter de letra.

  • Menus.- Coloca el menú el estado indicado por el parámetro que recibe.

  • Retornar.- Usado por los formularios el momento de descargarse para regresar el Formulario principal a su tamaño original.

  • Proc_Ver_Clave.- Verifica la clave recibida del marcador y envía la respuesta de la búsqueda al marcador.

  • IngresarDatos.- Con un parámetro tipo String que es la fecha recibida del marcador y lo ingresa a la base de datos.

  • DecHexRej.- Función con un parámetro tipo entero que transforma de hexadecimal a decimal para la fecha y hora enviada del marcador.

  • Proc_Ver_Consulta.- Verifica la clave recibida del marcador y envía la respuesta de valides al marcador.

  • VeriHora.- Con cuatro parámetros para almacenar dos horas y compararlas, si la primera es mayor a la segunda la función devuelve verdadero o si no falso.

  • TomaFoto.- Es el procedimiento que se encarga de tomar la foto y guardarla en el disco en un formato comprimido.

  • FinDeMes.- Función para enviar el último día del mes, según el mes y el año recibido por los parámetros MM y aa.

  • IniciarMenu.- Coloca u oculta las opciones del menú principal de acuerdo al tipo de usuario actual.

  • Variables: Contiene todas las variables globales usadas en la aplicación.

RutaConexion: constante tipo String que contiene la ubicación de la base de datos.

EnvioReloj: de tipo booleano para el envío de datos al reloj marcador.

EnvioDatos: tipo booleano para envío de datos de registros al marcador.

Lectura: de tipo String para almacenar el dato recibido del marcador.

Tipos: es una enumeración para mandar datos al marcador

r: de tipo entero para recorrer los datos del reloj.

UserActivo: de tipo entero para almacenar el código del usuario activo.

TipoUser: de tipo entero para almacenar el tipo de usuario activo.

Largo,Ancho: de tipo entero almacenan el largo y el ancho del tamaño de la ventana.

Nc: de tipo entero para el numero de dígitos de la clave.

clave: de tipo String para almacenar la clave recibida del marcador.

DatoFecha(5): vector tipo entero para almacenar la fecha de marcación.

Puerto: tipo entero indica el número de puerto de comunicación serial.

Usb: tipo boolena indica si se esta o no usando un convertidor de serial a usb.

HoraNocD, MinutoNocD, HoraNocH, MinutoNocH: tipo entero contiene las horas nocturnas para los cálculos.

SD100: tipo booleana indica si el sábado y domingo es extras al 100% o no.

NumeroMarcacion, IngSal: de tipo entero indica el número de marcación y el estado para el nombre de la foto.

  • Módulos de clase:

La aplicación cuenta con seis módulos de clase:

  • Bd_Asignaciones: Controla la tabla asignaciones de la base de datos, como propiedades posee a todos los campos de la tabla, y contiene los métodos.- Nuevo (para crear nuevos registros), Borrar (borrar un registro), LlenarAsignaciones (llena en un listbox todas las asignaciones de un empleado).

  • BD_Config: Sirve para colocar en una tabla llamada configuración el valor del numero de puerto y si se esta usando o no un convertidor serial a usb, como propiedades de solo lectura tiene a todos los campos de la tabla y contiene los métodos CambioPuerto (cambia el numero del puerto), y CambioUsb (cambia de estado a la indicación de que si hay o no un convertidor serial usb).

  • BD_DiasF: Sirve para cambiar datos en la tabla DiasF para los días feriados, tiene como propiedades de solo lectura a todos los campos y los siguientes métodos: Nuevo (para crear un nuevo día feriado), BuscaNombre (devuelve verdadero si encuentra un nombre igual en la base de datos), BuscaCodigo (devuelve verdadero si encuentra un código igual en la tabla y carga los nuevos datos en sus propiedades), BuscaFecha (encuentra un fecha ingresada en la base de datos y devuelve verdadero), LlenarMes (colorea las celdas del calendario de acuerdo al mes ingresado), LLenarLista (llena un listbox con las fechas festivas de la fecha ingresada en sus parámetros), y Borrar (elimina una fecha de la base de datos).

  • BD_Marcacion: Contiene toda la gestión para el manejo de la tabla Marcaciones que almacena todos los datos de marcado. Contiene como propiedades a todos los campos de la tabla, y sus métodos son: IngresoMarcado (ingresa una nueva marcación), VerTurno (analiza y devuelve el posible turno de trabajo que esta realizando el usuario), CerrarTurno (realiza el proceso de marcación de salida de un usuario), CalculoHoras (calcula todas las horas realizadas en el turno de un usuario), VerificarCierre (analiza si la marcación de cierre es correcta o talvez es una de inicio ya que se olvido marcar la de salida), LLenarListado (llena un listbox con los usuarios activos o pedidos por fecha), LlenaDatos (llena todos los datos en un vector de cadenas de una marcación), Consultando (envía verdadero si el usuario esta activo actualmente para indicar que esta laborando), LLenarReporte (llena un MSFlexGrid con los datos de marcado de acuerdo a un rango de fechas).

  • BD_Personal: Gestiona la tabla personal de la base de datos, tiene como propiedades a todos los campos de la tabla, y los métodos son: Nuevo (para crear otro usuario), Actualiza (modifica un registro de personal), BuscaCodigo (devuelve verdadero si encuentra el código ingresado), BuscaRepetido (devuelve verdadero si encuentra un nombre de usuario repetido), ClaveRepetido (devuelve verdadero si encuentra una clave repetida), Borrar (borra a un usuario), Primero (coloca al primer usuario de la tabla), Ultimo (se coloca en el ultimo usuario), Anterior (se coloca en el usuario anterior al actual), Siguiente ( se coloca en el siguiente usuario), Búsqueda (llena un listbox con el resultado de buscar según los parámetros ingresados), CRBusqueda (coloca en el registro resultante de la búsqueda).

  • BD_Turnos: Controla y realiza cambios en la tabla turnos de la base de datos, sus propiedades son los campos de la base de datos y sus métodos son: Nuevo (crea un nuevo registro de turno), Actualiza (actualiza los datos de un registro), BuscaCodigo ( devuelve verdadero si encuentra un código igual en la base de datos), LlenarLista (llena un listbox con todos los turnos disponibles), Primero (coloca al primer turno de la tabla), Ultimo (se coloca en el ultimo turno), Anterior (se coloca en el turno anterior al actual), Siguiente ( se coloca en el siguiente turno).

El código completo del software de control de empleado se lo puede revisar en ANEXO 2.

Conclusiones

El sistema elaborado es una solución práctica para el problema de control de asistencia de los empleados, cada negocio maneja muy variadas formas de control por lo que seria necesario adaptarse a ellas, el sistema reduce significativamente el tiempo perdido por parte del personal que manipula la asistencia de los empleados.

En algunos casos los turnos suelen ser muy elaborados o no se atiende al tipo de horas extras normalmente ejecutados, esto se debe a la incursión en grupos de trabajo que cubren los días sábados, domingos o feriados y salen libres en otros días de la semana, en estos casos las horas extras están condicionadas de otras formas de pago o al antojo de los que manejan al personal.

Por estos motivos el software debe sufrir modificaciones personalizadas para cubrir todos esos cambios. Sin embargo no quiere decir que se reconstruya toda la aplicación pues se tratan de normas especiales y fácilmente modificables.

La persona encargada del manejo de asistencia puede al fin dedicarse a otras tareas más importantes ya que la aplicación cubre talvez en un 100% este manejo, dependiendo de cada una de las necesidades de los negocios.

Con la ayuda de la cámara web el administrador de personal puede verificar cualquier sospecha o duda, a cualquier empleado en un tiempo dado si en verdad marco esa persona o no.

La aplicación cubre las necesidades planteadas a la mayor parte de negocios necesitando ser personalizada para el resto debido a las políticas de turnos que estas manejen.

Recomendaciones

Un grave error con el que se encuentra al implementar este sistema es la poca seriedad que algunos negocios tienen ante la responsabilidad de marcar su entrada o salida, ya que no cuenta con políticas o normas para que el marcado se haga de una forma correcta, el sistema debe ir de la mano con estas políticas ya que puede darse casos de que los empleados no marquen debidamente y se produzcan errores.

Es necesario por tanto dar a conocer al personal la importancia que tiene para ellos y para el negocio la puntualidad y el compromiso de marcar correctamente sus entradas o salidas, por lo que es recomendable dar charlas al respecto e incentivar al empleado puntual y a su vez llamar la atención a aquel que no cumpla con estos requisitos.

El sistema de seguridad mediante la cámara web es muy importante por lo que debe instruir al personal a marcar correctamente y no cubrirse o alejarse deliberadamente de este control, es importante que la empresa este consiente que una mala captura de la foto significa un posible fraude por parte del empleado en las marcaciones.

Glosario

API.- Una API (del inglés Application Programming Interface – Interfaz de Programación de Aplicaciones) es un conjunto de especificaciones de comunicación entre componentes software.Se trata del conjunto de llamadas al sistema que ofrecen acceso a los servicios del sistema desde los procesos y representa un método para conseguir abstracción en la programación.

Asíncrono.- Hace referencia al suceso que no tiene lugar en total correspondencia temporal con otro suceso.

Baudios.- El baudio (en inglés, baud) se utilizó originariamente para medir la velocidad de las transmisiones telegráficas, tomando su nombre del ingeniero francés Jean Maurice Baudot, que fue el primero en realizar este tipo de mediciones. El baud es la unidad informática que se utiliza para cuantificar el número de cambios de estado, o eventos de señalización, que se producen cada segundo durante la transferencia de datos. La velocidad de transferencia de datos puede medirse en bauds o en bit/segundo. Lo habitual, hoy por hoy, es medirla en bits por segundo.

Buffer.- Es una ubicación de la memoria en una computadora o en un instrumento digital reservada para el almacenamiento temporal de información digital, mientras que está esperando ser procesada.

Capacitor.- Un condensador, a veces denominado incorrectamente con el anglicismo capacitor, es un dispositivo formado por dos conductores o armaduras, generalmente en forma de placas o láminas separados por un material dieléctrico, que, sometidos a una diferencia de potencial (d.d.p.) adquieren una determinada carga eléctrica.

Chip.- Un circuito integrado (CI) o chip es una pastilla muy delgada en el que se encuentran miles o millones de dispositivos electrónicos interconectados, principalmente diodos y transistores, y también componentes pasivos como resistencia o capacitores.

Control Active X.- Son componentes de software que se pueden utilizar en un programa para cumplir con funciones especificas.

DLL.- Es el acrónimo de Dynamic Linking Library (Bibliotecas de Enlace Dinámico), término con el que se refiere a los archivos con código ejecutable que se cargan bajo demanda del programa por parte del sistema operativo. Esta denominación se refiere a los sistemas operativos Windows siendo la extensión con la que se identifican los ficheros, aunque el concepto existe en prácticamente todos los sistemas operativos modernos.

Host.- Es una máquina conectada a una red de ordenadores y que tiene un nombre de equipo (en inglés, hostname, es un nombre único que se le da a un dispositivo conectado a una red informática. Puede ser un ordenador, un servidor de ficheros, un dispositivo de almacenamiento por red, una máquina de fax, impresora, etc. Este nombre ayuda al administrador de la red a identificar las máquinas sin tener que memorizar una dirección IP para cada una de ellas.) que lo identifica.

Interfaz.- Una interfaz de usuario es la parte del programa informático que permite el flujo de información entre varias aplicaciones o entre el propio programa y el usuario. Metafóricamente se entiende la Interfaz como conversación entre el usuario y el sistema (o entre el usuario y el diseñador).

Interrupción.- También conocida como interrupción hardware), es una señal recibida por el procesador de un ordenador, indicando que debe "interrumpir" el curso de ejecución actual y pasar a ejecutar código específico para tratar esta situación.

Resistor.- Se denomina resistencia o resistor (en lenguaje técnico) al componente electrónico diseñado para introducir una resistencia eléctrica determinada entre dos puntos de un circuito.

Oscilador.- Es un circuito que es capaz de convertir la corriente continua en una corriente que varía de forma periódica en el tiempo (corriente periódica); estas oscilaciones pueden ser senoidales, cuadradas, triangulares, etc., dependiendo de la forma que tenga la onda producida. Un oscilador de onda cuadrada suele denominarse multivibrador.

Paridad.- Los códigos de paridad se usan en Telecomunicaciones para detectar, y en algunos casos corregir, errores en la transmisión. Para ellos se añade en origen un bit extra llamado bit de paridad a los n bits que forman el carácter original.

Pin.- También llamado terminal o patilla, pin es cada uno de los contactos terminales de un conector o componente electrónico, fabricado de un material conductor de la electricidad.

Bibliografía

Aprenda rápidamente a programar Microcontroladores. Reyes, Carlos A. 2004

http://www.programacion.com

http://electrica.frro.utn.edu.ar/finforma/apuntes/apuntes.asp

http://lawebdelprogramador.com

PROGRAMACION AVANZADA CON VISUAL BASIC Balena,Francesco McGraw-Hill Interamericana Editores, S.A. de C.V

ACCESS XP ENTER PLUX Tiznado McGraw-Hill Interamericana Editores, S.A. de C.V

http://www.todopic.com.ar

http://www.melabs.com

Anexos

ANEXO 1

CODIGO PROGRAMA DEL MARCADOR

ADCON1=%00000110

@ device XT_OSC

INCLUDE "modedefs.bas"

'****************DEFINICIONES*************************************

define lcd_lines 4 'define un LCD de 4 líneas

define lcd_dreg portb 'define los pines del LCD al puerto b

define lcd_dbit 4 'empezando desde el puerto 4 en adelante

define lcd_rsreg portb 'define el puerto para conectar el bit RS

define lcd_rsbit 1 'define el pin para conectar el bit RS

define lcd_ereg portb 'define el puerto para conectar el bit Enable

define lcd_ebit 2 'define el pin para conectar el bit Enable

define I2C_SCLOUT 1 'para que no necesite resistencia pull-up en scl

'******************VARIABLES********************************************

NUMERO VAR BYTE ;variable numero para almacenar la tecla pulsada

filas var portd 'para el barrido de las filas

UNO VAR PORTD.4 ;nombres para los pines de las columnas

DOS VAR PORTD.5

TRES VAR PORTD.6

ledverde var portc.0 'para el led verde en el puerto D pin 2

ledazul var portc.1 'para el led azul en el puerto D pin 3

ledrojo var portc.2 'para el led rojo en el puerto D pin 4

nm var byte 'contiene el numero de letras-1 del mensaje

tmen var word 'da la velocidad de aparición del mensaje

letra var byte 'para la letra del mensaje

posm var byte 'numero-1 de letras de visualización actual del mensaje

numensaje var byte 'para indicar que mensaje es

i var word 'para los bloques for

bm var bit 'bandera para indicar si se esta marcando

bc var bit 'bandera para indicar si se esta consultando

tm var word 'para controlar el tiempo de marcado

nc var byte 'para el numero de dígitos de la clave

Cpin var Portc.3 'pin de señal de reloj I2C

Dpin var Portc.4 'pin de datos I2C

segu var byte ;definir tamaño de variable segundos 1 a 255

minu var byte ;variable para los minutos

hora var byte ;variable para las horas

diaF var byte ;variable día fecha del mes

mes var byte ;variable mes

anio var byte ;variable año de 2 dígitos

'actualizado VAR BIT ;variable para almacenar un 1 o 0

tt var word 'para el tiempo de refresco del reloj

IngSer var PORTC.5 'indica la entrada serial para la comunicación

OutSer var PORTC.6 'indica la salida serial para la comunicación

ts var word 'indica el tiempo en base a la vista

'del reloj para comunicarse con la PC cada minuto durante 50 milisegundos

dato var byte 'variable para el dato a recibir del pc

Clave var byte[6] 'arreglo para almacenar la clave

CC var bit 'bandera para indicar clave correcta

Cl0 var byte 'para almacenar cada digito de la clave

Cl1 var byte

Cl2 var byte

Cl3 var byte

Cl4 var byte

Cl5 var byte

'******************CONSTANTES********************************************

T_mensajes con 850 'coloca la velocidad de los mensajes 850

T_marcado con 25000 'coloca el tiempo para marcar 25000

T_reloj con 1000 'tiempo para leer el reloj 1000

T_lectura con 30 'tiempo aprox. en segundos para leer el puerto pc 60

'**********************INICIALIZACION DEL PROGRAMA********************************

nm = 39 'indica el numero de letras-1 del mensaje por defecto

numensaje = 0 'indica que inicia con mensaje por defecto

tmen = 0 'inicializa la velocidad del mensaje

posm = 147 'indica el numero de posición a ver la letra mensaje

pause 200 'pausa para el encendido del LCD

bm = 0 'indica que no se esta marcando

bc = 0 'indica que no se esta consultando

tm = 0 'indica que no esta iniciado el tiempo de marcado

nc = 0

tt = 0

ts = 0

CC = 0

'EEPROM 0,[0] ;memoria 0 con el valor inicial 0 , sirve para

;indicar que nunca ha corrido este programa

'READ 0,actualizado ;carga el valor de la memoria EEPROM dirección 0

'IF actualizado =0 THEN gosub grabarRTC ;si es la 1ra vez que corre ir a grabar RTC

;caso contrario solo leer el RTC

high LedVerde

lcdout $fe,1

gosub Reloj

trisd=%11110000 'coloca los pines del puerto d en entradas y los otros en salidas

filas = 1

CICLO:

GOSUB BARRIDO : GOSUB ESPACIO ;ir a barrido y retorna a un antirrebote

GOSUB TECLADO ; programa de gestión del teclado

GOTO CICLO

'***********************BARRIDO DE LAS TECLAS**************************

BARRIDO:

if tmen=T_mensajes then gosub Mensajes

tmen=tmen+1

if tm=T_marcado then gosub IniciaMensaje

if bm=1 or bc=1 then tm=tm+1

if tt=T_reloj then gosub Reloj

tt=tt+1

IF UNO = 1 THEN

NUMERO ="1"

RETURN ;tecla pulsada retorne con variable cargada con 1

ENDIF

IF DOS = 1 THEN

NUMERO ="2"

RETURN ;tecla pulsada retorne con variable cargada con 2

ENDIF

IF TRES = 1 THEN

NUMERO ="3"

RETURN ;tecla pulsada retorne con variable cargada con 3

ENDIF

filas = filas<<1

IF UNO = 1 THEN

NUMERO ="4"

RETURN ;tecla pulsada retorne con variable cargada con 1

ENDIF

IF DOS = 1 THEN

NUMERO ="5"

RETURN ;tecla pulsada retorne con variable cargada con 2

ENDIF

IF TRES = 1 THEN

NUMERO ="6"

RETURN ;tecla pulsada retorne con variable cargada con 3

ENDIF

filas = filas<<1

IF UNO = 1 THEN

NUMERO ="7"

RETURN ;tecla pulsada retorne con variable cargada con 1

ENDIF

IF DOS = 1 THEN

NUMERO ="8"

RETURN ;tecla pulsada retorne con variable cargada con 2

ENDIF

IF TRES = 1 THEN

NUMERO ="9"

RETURN ;tecla pulsada retorne con variable cargada con 3

ENDIF

filas = filas<<1

IF UNO = 1 THEN

NUMERO ="*"

RETURN ;tecla pulsada retorne con variable cargada con 1

ENDIF

IF DOS = 1 THEN

NUMERO ="0"

RETURN ;tecla pulsada retorne con variable cargada con 2

ENDIF

IF TRES = 1 THEN

NUMERO ="#"

RETURN ;tecla pulsada retorne con variable cargada con 3

ENDIF

filas = 1

GOTO BARRIDO

; ***************** programa de antirrebote de teclas *************

ESPACIO: ;programa de antirrebote de teclas

if tmen=T_mensajes then gosub Mensajes

tmen=tmen+1

if tt=T_reloj then gosub Reloj

tt=tt+1

IF UNO = 1 THEN ESPACIO ;si la tecla sigue pulsada ir espacio

IF DOS = 1 THEN ESPACIO ;si la tecla sigue pulsada ir espacio

IF TRES = 1 THEN ESPACIO ;si la tecla sigue pulsada ir espacio

pause 10

RETURN ;retorna si se suelta las teclas

'************************LEER EL RELOJ EN TIEMPO REAL************************

Reloj:

I2CREAD DPIN,CPIN,%11010000,0,[segu] ;leer los datos de mem. 0,

I2CREAD DPIN,CPIN,%11010000,1,[minu] ;1,2,..y guardarlos en sus

I2CREAD DPIN,CPIN,%11010000,2,[hora] ;respectivas variables

I2CREAD DPIN,CPIN,%11010000,4,[diaF]

I2CREAD DPIN,CPIN,%11010000,5,[mes]

I2CREAD DPIN,CPIN,%11010000,6,[anio]

lcdout $fe,$cc,hex2 hora,":",hex2 minu,":",hex2 segu ;mostrar la

;hora minuto y segundos en 2 dígitos (HEX2)

lcdout $fe,$c0,hex2 diaF,"/",hex2 mes,"/",hex2 anio ; mostrar la fecha

tt=0

ts=ts+1

if ts = T_lectura then

ts = 0

gosub Com1

endif

return

'*********************visualización de los mensajes************************

Mensajes:

if numensaje=0 then

for i=128 to 147

if iposm+nm then

lcdout $fe,i," "

else

lookup i-posm,["Presione * para Marcar o # para Consulta"],letra

endif

next

posm=posm-1

if posm<128-nm then posm=147

tmen=0

endif

return

'*********************cambio de mensaje al de inicio*****************

IniciaMensaje:

gosub Mensaje1

bc=0

nc=0

CC=0

tmen=0

low ledazul

lcdout $fe,201," "

return

Mensaje1:

nm=39

numensaje=0

gosub LimpiarMensaje

return

'*********************cambio de mensaje a ingrese la clave marcado*****************

Mensaje2:

lcdout $fe,128,"CLAVE: "

numensaje=1

return

'*********************limpia la línea de mensaje y encera la posición**********

LimpiarMensaje:

lcdout $fe,$92," "

return

'*********************Programa de gestión del teclado***************************

TECLADO:

IF bm=0 and bc=0 and (NUMERO="*" OR NUMERO="#")THEN

high ledazul

lcdout $fe,192," "

gosub Mensaje2

if NUMERO="*" THEN

bm=1

lcdout $fe,201,"(M)"

ELSE

bc=1

lcdout $fe,201,"(C)"

ENDIF

ELSE

if (NUMERO="*" AND bm=1) or(NUMERO="#" AND bc=1) THEN

if bm=1 or bc=1 then gosub Verclave

lcdout $fe,128," "

lcdout $fe,192," "

gosub IniciaMensaje

ENDIF

ENDIF

IF (bm=1 or bc=1) AND NUMERO<>"*" AND NUMERO<>"#" then

if nc<6 then EscribeClave

endif

RETURN

***********COLOCACION DE LA CONTRASEÑA*************

EscribeClave:

Clave[nc]=numero

lcdout $fe,135+nc,"*"

nc=nc+1

tm=0

return

'********************COMUNICACION GENERAL CON LA PC********************

Com1:

serout OutSer,T9600,["P"]

serin IngSer,T9600,250,Seguir,dato

Seguir:

'********PARA IGUALAR EL RELOJ**********************

if dato="R" then

dato="0"

serin IngSer,T9600,5000,ErrorComunicacion,segu

serin IngSer,T9600,5000,ErrorComunicacion,minu

serin IngSer,T9600,5000,ErrorComunicacion,hora

serin IngSer,T9600,5000,ErrorComunicacion,diaF

serin IngSer,T9600,5000,ErrorComunicacion,mes

serin IngSer,T9600,5000,ErrorComunicacion,anio

gosub grabarRTC

lcdout $fe,192," "

endif

ErrorComunicacion:

return

'**************************PROCESO DE VER LA CLAVE***********************

Verclave:

low LedAzul

high LedRojo

gosub Verificar

if CC=0 then

lcdout $fe,128,"Clave Incorrecta "

else

if bm=1 then

gosub EnvioDatos

lcdout $fe,128,"Listo el marcado "

endif

if bc=1 then

gosub EnvioConsulta

lcdout $fe,128,"Lista la consulta "

endif

endif

pause 2000

low LedRojo

gosub IniciaMensaje

return

'************************Codigo para verificacion de la clave******************

Verificar:

serout OutSer,T9600,["V"]

serin IngSer,T9600,5000,Ver,dato

Ver:

'*********SI LA PC ESTA APAGADA O NO RESPONDE***************************

if dato="0" then

'******por si falla la verificacion del pc**************************

PcOff1:

endif

'*********VERIFICACION ENVIADA DESDE LA PC******************************

if dato="C" then

dato="0"

gosub CargarClave

serout OutSer,T9600,["C",nc-1,Cl0,Cl1,Cl2,Cl3,Cl4,Cl5]

serin IngSer,T9600,5000,PcOff1,dato

if dato="Y" then CC=1

if dato="N" then CC=0

endif

return

'************************Envio de datos de marcado***************************

EnvioDatos:

serout OutSer,T9600,["E"]

serin IngSer,T9600,5000,PcOff2,dato

if dato="0" then

PcOff2:

endif

'*************INGRESE DE REGISTRO EN LA PC******************************

if dato="L" then

dato = "0"

serout OutSer,T9600,["R",hora,minu,segu,diaF,mes,anio]

serin IngSer,T9600,5000,PcOff2,dato

if dato = "K" then

lcdout $fe,128,"INGRESO OK "

PAUSE 2000

dato ="0"

endif

endif

return

'************************Envio de datos de consulta***************************

EnvioConsulta:

serout OutSer,T9600,["F"]

serin IngSer,T9600,5000,PcOff2,dato

if dato="0" then

PcOff3:

lcdout $fe,128," SIN CONEXION "

PAUSE 2000

endif

'*************INGRESE DE REGISTRO EN LA PC******************************

if dato="X" then

dato = "0"

serout OutSer,T9600,["S"]

serin IngSer,T9600,5000,PcOff3,dato

if dato="Y" then lcdout $fe,128," ACTIVO "

if dato="N" then lcdout $fe,128," NO INGRESADO "

dato ="0"

pause 2000

endif

return

'*********************GRABA LA HORA Y LA FECHA**********************

grabarRTC:

I2CWRITE DPIN,CPIN,%11010000,0,[segu] ;setear 00 segundos

Pause 30 ;retardo para finalizar grabación

I2CWRITE DPIN,CPIN,%11010000,1,[minu] ;setear 41 minutos

Pause 30

I2CWRITE DPIN,CPIN,%11010000,2,[hora] ;setear las 22 horas

Pause 30

I2CWRITE DPIN,CPIN,%11010000,4,[diaF] ;setear día 17 del mes

Pause 30

I2CWRITE DPIN,CPIN,%11010000,5,[mes] ;setear mes septiembre

Pause 30

I2CWRITE DPIN,CPIN,%11010000,6,[anio] ;setear año 06

Pause 30

' WRITE 0,1 ;escribe en la memoria 0 el valor de 1 para que no

;se vuelva a grabar otra vez estos datos en el RTC

return

CargarClave:

Cl0=clave[0]

Cl1=clave[1]

Cl2=clave[2]

Cl3=clave[3]

Cl4=clave[4]

Cl5=clave[5]

return

END

ANEXO 2

CODIGO PROGRAMA DE CONTROL DE PERSONAL

FORMULARIOS:

FrmAsiganaciones:

Option Explicit

Private Personal As BD_Personal

Private Turnos As BD_Turnos

Private Asignar As Bb_Asignaciones

Private Sub CmdAceptar_Click()

Dim j As Integer

If TxtNombre(0).Visible = True Then

If LstNombres.ListIndex <> -1 Then

For j = 0 To 3

TxtNombre(j).Visible = False

Next j

LblNombre.FontSize = 14

Personal.BuscaCodigo LstNombres.ItemData(LstNombres.ListIndex)

LblNombre.Caption = Personal.nombre1 + " " + Personal.nombre2 + " " + Personal.apellido1 + " " + Personal.apellido2

LstNombres.Visible = False

Turnos.LLenarLista LstTurnos

Asignar.LlenarAsignaciones LstNombres.ItemData(LstNombres.ListIndex), LstTAsig

LstTurnos.Visible = True

LstTAsig.Visible = True

Else

MsgBox "NO HA SEÑALADO NINGUN NOMBRE", , "AVISO"

TxtNombre(0).SetFocus

End If

Else

If LstTAsig.ListCount > 0 Then

Asignar.Borrar LstNombres.ItemData(LstNombres.ListIndex)

For j = 0 To LstTAsig.ListCount – 1

Asignar.Nuevo LstNombres.ItemData(LstNombres.ListIndex), LstTAsig.ItemData(j)

Next j

Else

If MsgBox("SE BORRARAN LAS ASIGNACIONES ANTES COLOCADAS, ESTA SEGURO?", vbYesNo, "AVISO") = vbYes Then _

Asignar.Borrar LstNombres.ItemData(LstNombres.ListIndex)

End If

MsgBox "PROCESO REALIZADO", , "AVISO"

RegresarMenu

End If

End Sub

Private Sub RegresarMenu()

Dim j As Integer

For j = 0 To 3

TxtNombre(j).Text = ""

TxtNombre(j).Visible = True

Next j

Personal.Busqueda LstNombres, "", "", "", "", "", -1, True

LblNombre.FontName = "MS Sans Serif"

LblNombre.FontSize = 10

LblNombre.Caption = " 1er Apellido 2do Apellido 1er Nombre 2do Nombre"

LstTurnos.Visible = False

LstTAsig.Visible = False

LstNombres.Visible = True

TxtNombre(0).SetFocus

End Sub

Private Sub CmdCancelar_Click()

If TxtNombre(0).Visible = True Then

Unload Me

Else

RegresarMenu

End If

End Sub

Private Sub CmdControles_Click(Index As Integer)

Dim ii As Integer

Dim va As Boolean

Select Case Index

Case 0

If LstTurnos.ListCount > 0 Then

LstTAsig.Clear

For ii = 0 To LstTurnos.ListCount – 1

LstTAsig.AddItem LstTurnos.List(ii)

LstTAsig.ItemData(LstTAsig.NewIndex) = LstTurnos.ItemData(ii)

Next ii

End If

Case 1

If LstTurnos.ListCount > 0 And LstTurnos.ListIndex <> -1 Then

va = False

If LstTAsig.ListCount > 0 Then

For ii = 0 To LstTAsig.ListCount – 1

If LstTurnos.ItemData(LstTurnos.ListIndex) = LstTAsig.ItemData(ii) Then

va = True

Exit For

End If

Next ii

End If

Partes: 1, 2, 3, 4
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter